什麼是變數?
變數就是所謂給電腦辨識定義資訊的名稱。
什麼是值?
值就是所謂給電腦辨識該變數所賦予出的值,也就是所謂的代出想要的數據答案。
不受任何作用域規範所限制,可以選擇將每個函數或是全域範圍的變數初始化為一個值。
var x = 1;
if (x === 1) {
var x = 2;
console.log(x);
// Expected output: 2
}
console.log(x);
// Expected output: 2
只作用在當前區塊的變數,初始值可選擇性的設定,區域變數宣告後可以重新賦值。
let x = 1;
if (x === 1) {
let x = 2;
console.log(x);
// Expected output: 2
}
console.log(x);
// Expected output: 1
有點像使用 let 所宣告的變數,具有區塊可視範圍。
常數不能重複指定值,也不能重複宣告。
區域變數宣告後不可以改變賦值。
const number = 42;
try {
number = 99;
} catch (err) {
console.log(err);
// Expected output: TypeError: invalid assignment to const `number'
// (Note: the exact output may be browser-dependent)
}
console.log(number);
// Expected output: 42
字串前後務必要包含單引號‘’或雙引號" ",可以是任何敘述文字
true
或 false
undefind 是宣告了但沒賦值(沒給予值);not defined 是連宣告都沒有,所以連找都找不到。
const s1 = Symbol();
const s2 = Symbol();
console.log(s1 === s2); // false
symbols 有另一個很重要的用途,就是用作對象的 key。
const obj = {};
const sym = Symbol();
obj[sym] = 'foo';
obj.bar = 'bar';
console.log(obj); // { bar: 'bar' }
console.log(sym in obj); // true
console.log(obj[sym]); // foo
console.log(Object.keys(obj)); // ['bar']
需要使用[]將陣列內容物包起來
Object() 構造函數將輸入轉換為一個對象。它的行為取決於輸入的類型。
const o = new Object();
o.foo = 42;
console.log(o);
// { foo: 42 }